package com.link_with_health.service;

import com.link_with_health.exception.BaseException;
import com.link_with_health.model.InfoTypeEntity;
import com.link_with_health.model.SysInfoEntity;

import java.util.List;

public interface SysInfoService {

    /**
     * 通过通知信息id获取通知信息
     * @param id 通知信息id
     * @return  通知信息
     * @throws BaseException 异常
     */
    SysInfoEntity getSysInfoById(Long id) throws BaseException;

    /**
     * 通过发送者获取通知信息
     * @param id 发送者id
     * @return 通知信息
     * @throws BaseException 异常
     */
    List<SysInfoEntity> getSysInfoBySender (Long id) throws BaseException;

    /**
     * 通过接受者id获取通知信息
     * @param id 接受者id
     * @return 通知信息
     * @throws BaseException 异常
     */
    List<SysInfoEntity> getSysInfoByReceiver(Long id) throws BaseException;

    /**
     * 通过信息类型获取通知信息
     * @param id 类型id
     * @return 通知信息
     * @throws BaseException 异常
     */
    List<SysInfoEntity> getSysInfoByInfoType(int id) throws BaseException;

    /**
     * 获取所有通知信息
     * @return 通知信息
     * @throws BaseException 异常
     */
    List<SysInfoEntity> getAllSysInfo() throws BaseException;

    /**
     * 增加通知信息
     * @param sysInfo 通知信息
     * @return  改动数量
     * @throws BaseException 异常
     */
    int addSysInfo(SysInfoEntity sysInfo) throws BaseException;

    /**
     * 修改通知信息
     * @param sysInfo 通知信息
     * @return 改动数量
     * @throws BaseException 异常
     */
    int changeInfo(SysInfoEntity sysInfo) throws BaseException;

    /**
     * 删除通知信息
     * @param id 信息id
     * @return 改动数量
     * @throws BaseException 异常
     */
    int deleteSysInfo(Long id) throws BaseException;

    /**
     * 通过类型id获取类型信息
     * @param id 类型id
     * @return  类型数据
     * @throws BaseException 异常
     */
    InfoTypeEntity getInfoTypeById(int id) throws BaseException;

    /**
     * 通过类型名称获取类型信息 支持模糊
     * @param type 名称
     * @return 类型信息
     * @throws BaseException 异常
     */
    List<InfoTypeEntity> getInfoTypeByType(String type) throws BaseException;

    /**
     * 获取所有类型
     * @return  类型信息
     * @throws BaseException 异常
     */
    List<InfoTypeEntity> getAllInfoType() throws BaseException;

    /**
     * 添加类型信息
     * @param infoType 类型信息
     * @return 类型信息
     * @throws BaseException 异常
     */
    int addInfoType (InfoTypeEntity infoType) throws BaseException;

    /**
     * 修改类型
     * @param infoType 通知信息
     * @return  改动数量
     * @throws BaseException 异常
     */
    int changeInfoType(InfoTypeEntity infoType) throws BaseException;

    /**
     * 删除类型
     * @param id 类型id
     * @return  改动数量
     * @throws BaseException 异常
     */
    int deleteInfoType(int id) throws BaseException;
}
